package com.eastfair.certificate.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;
import com.eastfair.certificate.enumeration.CertificateUserDataResourceEnum;
import com.eastfair.certificate.enumeration.CertificateUserCertificateStatusEnum;
import com.eastfair.certificate.enumeration.CertificateUserFirstAuthStatusEnum;
import com.eastfair.certificate.enumeration.CertificateUserResourceTypeEnum;
import com.eastfair.certificate.enumeration.CertificateUserCertificateTypeEnum;
import com.eastfair.certificate.enumeration.CertificateUserSecondAuthStatusEnum;
import com.eastfair.certificate.enumeration.CertificateUserDrawTypeEnum;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 用户填写的制证信息
 * </p>
 *
 * @author ligang
 * @since 2023-07-07
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("cert_certificate_user")
@ApiModel(value = "CertificateUser", description = "用户填写的制证信息")
@AllArgsConstructor
public class CertificateUser extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 证件id
     */
    @ApiModelProperty(value = "证件id")
    @TableField(value = "certificate_id")
    @Excel(name = "证件id")
    private Long certificateId;

    /**
     *  主体类型  主运，搭建商，参展商
     */
    @ApiModelProperty(value = " 主体类型  主运，搭建商，参展商")
    @Size(max = 255, message = " 主体类型  主运，搭建商，参展商长度不能超过255")
    @TableField(value = "principal_type", condition = LIKE)
    @Excel(name = " 主体类型  主运，搭建商，参展商")
    private String principalType;

    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    @TableField(value = "exhibition_id")
    @Excel(name = "展会id")
    private Long exhibitionId;

    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    @Size(max = 255, message = "公司名称长度不能超过255")
    @TableField(value = "company_name", condition = LIKE)
    @Excel(name = "公司名称")
    private String companyName;

    /**
     * 公司id
     */
    @ApiModelProperty(value = "公司id")
    @TableField(value = "company_id")
    @Excel(name = "公司id")
    private Long companyId;

    /**
     * 身份证（正面）
     */
    @ApiModelProperty(value = "身份证（正面）")
    @Size(max = 255, message = "身份证（正面）长度不能超过255")
    @TableField(value = "card_front", condition = LIKE)
    @Excel(name = "身份证（正面）")
    private String cardFront;

    /**
     * 身份证（反面）
     */
    @ApiModelProperty(value = "身份证（反面）")
    @Size(max = 255, message = "身份证（反面）长度不能超过255")
    @TableField(value = "card_back", condition = LIKE)
    @Excel(name = "身份证（反面）")
    private String cardBack;

    /**
     * 身份证号码
     */
    @ApiModelProperty(value = "身份证号码")
    @Size(max = 255, message = "身份证号码长度不能超过255")
    @TableField(value = "card_number", condition = LIKE)
    @Excel(name = "身份证号码")
    private String cardNumber;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    @Size(max = 255, message = "姓名长度不能超过255")
    @TableField(value = "full_name", condition = LIKE)
    @Excel(name = "姓名")
    private String fullName;

    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    @Size(max = 255, message = "性别长度不能超过255")
    @TableField(value = "gender", condition = LIKE)
    @Excel(name = "性别")
    private String gender;

    /**
     * 货主手机号
     */
    @ApiModelProperty(value = "货主手机号")
    @Size(max = 255, message = "货主手机号长度不能超过255")
    @TableField(value = "cargo_mobile", condition = LIKE)
    @Excel(name = "货主手机号")
    private String cargoMobile;

    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    @Size(max = 255, message = "联系方式长度不能超过255")
    @TableField(value = "contact_information", condition = LIKE)
    @Excel(name = "联系方式")
    private String contactInformation;

    /**
     * 展商id
     */
    @ApiModelProperty(value = "展商id")
    @TableField(value = "exhibitor_id")
    @Excel(name = "展商id")
    private Long exhibitorId;

    /**
     * 展商名称
     */
    @ApiModelProperty(value = "展商名称")
    @Size(max = 255, message = "展商名称长度不能超过255")
    @TableField(value = "exhibitor_name", condition = LIKE)
    @Excel(name = "展商名称")
    private String exhibitorName;

    /**
     * 展位
     */
    @ApiModelProperty(value = "展位")
    @Size(max = 255, message = "展位长度不能超过255")
    @TableField(value = "booth", condition = LIKE)
    @Excel(name = "展位")
    private String booth;

    /**
     * 工作证件照
     */
    @ApiModelProperty(value = "工作证件照")
    @Size(max = 255, message = "工作证件照长度不能超过255")
    @TableField(value = "work_certificate_img", condition = LIKE)
    @Excel(name = "工作证件照")
    private String workCertificateImg;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Size(max = 512, message = "备注长度不能超过512")
    @TableField(value = "remarks", condition = LIKE)
    @Excel(name = "备注")
    private String remarks;

    /**
     * 车牌号
     */
    @ApiModelProperty(value = "车牌号")
    @Size(max = 255, message = "车牌号长度不能超过255")
    @TableField(value = "car_number", condition = LIKE)
    @Excel(name = "车牌号")
    private String carNumber;

    /**
     * 车型
     */
    @ApiModelProperty(value = "车型")
    @Size(max = 255, message = "车型长度不能超过255")
    @TableField(value = "car_type", condition = LIKE)
    @Excel(name = "车型")
    private String carType;

    /**
     * 车大小
     */
    @ApiModelProperty(value = "车大小")
    @Size(max = 255, message = "车大小长度不能超过255")
    @TableField(value = "car_size", condition = LIKE)
    @Excel(name = "车大小")
    private String carSize;

    /**
     * 车载货量
     */
    @ApiModelProperty(value = "车载货量")
    @Size(max = 255, message = "车载货量长度不能超过255")
    @TableField(value = "cargo_capacity", condition = LIKE)
    @Excel(name = "车载货量")
    private String cargoCapacity;

    /**
     * 载货材质 搭建材料  展品
     */
    @ApiModelProperty(value = "载货材质 搭建材料  展品")
    @Size(max = 255, message = "载货材质 搭建材料  展品长度不能超过255")
    @TableField(value = "cargo_material", condition = LIKE)
    @Excel(name = "载货材质 搭建材料  展品")
    private String cargoMaterial;

    /**
     * 装卸方式 叉车 登高车 人工自卸
     */
    @ApiModelProperty(value = "装卸方式 叉车 登高车 人工自卸")
    @Size(max = 255, message = "装卸方式 叉车 登高车 人工自卸长度不能超过255")
    @TableField(value = "handling_mode", condition = LIKE)
    @Excel(name = "装卸方式 叉车 登高车 人工自卸")
    private String handlingMode;

    /**
     * 运输品种
     */
    @ApiModelProperty(value = "运输品种")
    @Size(max = 255, message = "运输品种长度不能超过255")
    @TableField(value = "transport_variety", condition = LIKE)
    @Excel(name = "运输品种")
    private String transportVariety;

    /**
     * 工种高空作业证电工证其他
     */
    @ApiModelProperty(value = "工种高空作业证电工证其他")
    @Size(max = 255, message = "工种高空作业证电工证其他长度不能超过255")
    @TableField(value = "work_type", condition = LIKE)
    @Excel(name = "工种高空作业证电工证其他")
    private String workType;

    /**
     * 申请证件类型  机力车正 货运车证
     */
    @ApiModelProperty(value = "申请证件类型  机力车正 货运车证")
    @Size(max = 255, message = "申请证件类型  机力车正 货运车证长度不能超过255")
    @TableField(value = "document_type", condition = LIKE)
    @Excel(name = "申请证件类型  机力车正 货运车证")
    private String documentType;

    /**
     * 证件种类  ARRANGE:布展证;MOVEOUT:撤展证;
     */
    @ApiModelProperty(value = "证件种类  ARRANGE:布展证;MOVEOUT:撤展证;")
    @Size(max = 255, message = "证件种类  ARRANGE:布展证;MOVEOUT:撤展证;长度不能超过255")
    @TableField(value = "certificate_classify", condition = LIKE)
    @Excel(name = "证件种类  ARRANGE:布展证;MOVEOUT:撤展证;")
    private String certificateClassify;

    /**
     * 是否需要机力车
     */
    @ApiModelProperty(value = "是否需要机力车")
    @TableField(value = "is_power")
    @Excel(name = "是否需要机力车")
    private Integer isPower;

    /**
     * 装卸类型 叉车 登高车 吊车
     */
    @ApiModelProperty(value = "装卸类型 叉车 登高车 吊车")
    @Size(max = 255, message = "装卸类型 叉车 登高车 吊车长度不能超过255")
    @TableField(value = "power_classify", condition = LIKE)
    @Excel(name = "装卸类型 叉车 登高车 吊车")
    private String powerClassify;

    /**
     * 展馆code
     */
    @ApiModelProperty(value = "展馆code")
    @Size(max = 255, message = "展馆code长度不能超过255")
    @TableField(value = "space_code", condition = LIKE)
    @Excel(name = "展馆code")
    private String spaceCode;

    /**
     * 营业执照
     */
    @ApiModelProperty(value = "营业执照")
    @Size(max = 255, message = "营业执照长度不能超过255")
    @TableField(value = "business_license", condition = LIKE)
    @Excel(name = "营业执照")
    private String businessLicense;

    /**
     * 驾驶证复印件
     */
    @ApiModelProperty(value = "驾驶证复印件")
    @Size(max = 255, message = "驾驶证复印件长度不能超过255")
    @TableField(value = "driving_license", condition = LIKE)
    @Excel(name = "驾驶证复印件")
    private String drivingLicense;

    /**
     * 信息统计表
     */
    @ApiModelProperty(value = "信息统计表")
    @Size(max = 255, message = "信息统计表长度不能超过255")
    @TableField(value = "information_statistics", condition = LIKE)
    @Excel(name = "信息统计表")
    private String informationStatistics;

    /**
     * 报告复印件
     */
    @ApiModelProperty(value = "报告复印件")
    @Size(max = 255, message = "报告复印件长度不能超过255")
    @TableField(value = "report", condition = LIKE)
    @Excel(name = "报告复印件")
    private String report;

    /**
     * 特种设备人员证
     */
    @ApiModelProperty(value = "特种设备人员证")
    @Size(max = 255, message = "特种设备人员证长度不能超过255")
    @TableField(value = "special_certificate", condition = LIKE)
    @Excel(name = "特种设备人员证")
    private String specialCertificate;

    /**
     * 特种车辆证
     */
    @ApiModelProperty(value = "特种车辆证")
    @Size(max = 255, message = "特种车辆证长度不能超过255")
    @TableField(value = "special_vehicle_certificate", condition = LIKE)
    @Excel(name = "特种车辆证")
    private String specialVehicleCertificate;

    /**
     * 车辆年检报告
     */
    @ApiModelProperty(value = "车辆年检报告")
    @Size(max = 255, message = "车辆年检报告长度不能超过255")
    @TableField(value = "yearly_inspection", condition = LIKE)
    @Excel(name = "车辆年检报告")
    private String yearlyInspection;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 团队id
     */
    @ApiModelProperty(value = "团队id")
    @TableField(value = "team_id")
    @Excel(name = "团队id")
    private Long teamId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 是否可用，1是；0否
     */
    @ApiModelProperty(value = "是否可用，1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否可用，1是；0否")
    private Integer isEnabled;

    /**
     * 一次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}
     */
    @ApiModelProperty(value = "一次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}")
    @TableField(value = "first_auth_status")
    @Excel(name = "一次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}", replace = {"等待审核_WAIT", "审核中_CHECK", "审核成功_CHECK_SUCC", "审核失败_CHECK_FAIL",  "_null"})
    private CertificateUserFirstAuthStatusEnum firstAuthStatus;

    /**
     * 一次审核说明
     */
    @ApiModelProperty(value = "一次审核说明")
    @Size(max = 255, message = "一次审核说明长度不能超过255")
    @TableField(value = "first_auth_text", condition = LIKE)
    @Excel(name = "一次审核说明")
    private String firstAuthText;

    /**
     * 一次审核ID
     */
    @ApiModelProperty(value = "一次审核ID")
    @TableField(value = "first_auth_id")
    @Excel(name = "一次审核ID")
    private Long firstAuthId;

    /**
     * 二次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}
     */
    @ApiModelProperty(value = "二次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}")
    @TableField(value = "second_auth_status")
    @Excel(name = "二次审核状态#{WAIT:等待审核;CHECK:审核中;CHECK_SUCC:审核成功;CHECK_FAIL:审核失败;}", replace = {"等待审核_WAIT", "审核中_CHECK", "审核成功_CHECK_SUCC", "审核失败_CHECK_FAIL",  "_null"})
    private CertificateUserSecondAuthStatusEnum secondAuthStatus;

    /**
     * 二次审核说明
     */
    @ApiModelProperty(value = "二次审核说明")
    @Size(max = 255, message = "二次审核说明长度不能超过255")
    @TableField(value = "second_auth_text", condition = LIKE)
    @Excel(name = "二次审核说明")
    private String secondAuthText;

    /**
     * 二次审核ID
     */
    @ApiModelProperty(value = "二次审核ID")
    @TableField(value = "second_auth_id")
    @Excel(name = "二次审核ID")
    private Long secondAuthId;

    /**
     * 是否注销
     */
    @ApiModelProperty(value = "是否注销")
    @TableField(value = "is_cancel")
    @Excel(name = "是否注销")
    private Integer isCancel;

    /**
     * 是否挂失
     */
    @ApiModelProperty(value = "是否挂失")
    @TableField(value = "is_loss")
    @Excel(name = "是否挂失")
    private Integer isLoss;

    /**
     * 是否打印
     */
    @ApiModelProperty(value = "是否打印")
    @TableField(value = "is_print_take")
    @Excel(name = "是否打印")
    private Integer isPrintTake;

    /**
     * 是否领取
     */
    @ApiModelProperty(value = "是否领取")
    @TableField(value = "is_draw")
    @Excel(name = "是否领取")
    private Integer isDraw;

    /**
     * 是否黑名单
     */
    @ApiModelProperty(value = "是否黑名单")
    @TableField(value = "is_black")
    @Excel(name = "是否黑名单")
    private Integer isBlack;

    /**
     * 来源#{ONLINE:线上;SPOT:现场;}
     */
    @ApiModelProperty(value = "来源#{ONLINE:线上;SPOT:现场;}")
    @TableField(value = "resource_type")
    @Excel(name = "来源#{ONLINE:线上;SPOT:现场;}", replace = {"线上_ONLINE", "现场_SPOT",  "_null"})
    private CertificateUserResourceTypeEnum resourceType;

    /**
     * 是否补证
     */
    @ApiModelProperty(value = "是否补证")
    @TableField(value = "is_make")
    @Excel(name = "是否补证")
    private Integer isMake;

    /**
     * 是否支付
     */
    @ApiModelProperty(value = "是否支付")
    @TableField(value = "is_pay")
    @Excel(name = "是否支付")
    private Integer isPay;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    @Size(max = 255, message = "订单号长度不能超过255")
    @TableField(value = "order_number", condition = LIKE)
    @Excel(name = "订单号")
    private String orderNumber;

    /**
     * 订单id
     */
    @ApiModelProperty(value = "订单id")
    @TableField(value = "order_id")
    @Excel(name = "订单id")
    private Long orderId;

    /**
     * 进入时间
     */
    @ApiModelProperty(value = "进入时间")
    @TableField(value = "come_in_time")
    @Excel(name = "进入时间", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime comeInTime;

    /**
     * 证件类型:#{CAR:车证;PEOPLE:人证;POWER:机力车证;OTHER:其他证;}
     */
    @ApiModelProperty(value = "证件类型:#{CAR:车证;PEOPLE:人证;POWER:机力车证;OTHER:其他证;}")
    @TableField(value = "certificate_type")
    @Excel(name = "证件类型:#{CAR:车证;PEOPLE:人证;POWER:机力车证;OTHER:其他证;}", replace = {"车证_CAR", "人证_PEOPLE", "机力车证_POWER", "其他证_OTHER",  "_null"})
    private CertificateUserCertificateTypeEnum certificateType;

    /**
     * 工作结束时间(闸机)
     */
    @ApiModelProperty(value = "工作结束时间(闸机)")
    @TableField(value = "work_end_time")
    @Excel(name = "工作结束时间(闸机)", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime workEndTime;

    /**
     * 证件状态:#{AUTH:待审核;CHECK_FAIL:审核失败;SUBMIT:待提交;PAY:待付款;NO_PRINT:待制证;PRINT:已制证;DRAW:已领取;END:结束;}
     */
    @ApiModelProperty(value = "证件状态:#{AUTH:待审核;CHECK_FAIL:审核失败;SUBMIT:待提交;PAY:待付款;NO_PRINT:待制证;PRINT:已制证;DRAW:已领取;END:结束;}")
    @TableField(value = "certificate_status")
    @Excel(name = "证件状态:#{AUTH:待审核;CHECK_FAIL:审核失败;SUBMIT:待提交;PAY:待付款;NO_PRINT:待制证;PRINT:已制证;DRAW:已领取;END:结束;}", replace = {"待审核_AUTH", "审核失败_CHECK_FAIL", "待提交_SUBMIT", "待付款_PAY", "待制证_NO_PRINT", "已制证_PRINT", "已领取_DRAW", "结束_END",  "_null"})
    private CertificateUserCertificateStatusEnum certificateStatus;

    /**
     * 工作开始时间(闸机)
     */
    @ApiModelProperty(value = "工作开始时间(闸机)")
    @TableField(value = "work_start_time")
    @Excel(name = "工作开始时间(闸机)", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime workStartTime;

    /**
     * 预约进入时间开始
     */
    @ApiModelProperty(value = "预约进入时间开始")
    @TableField(value = "appointment_in_start_time")
    @Excel(name = "预约进入时间开始", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime appointmentInStartTime;

    /**
     * 预约进入时间结束
     */
    @ApiModelProperty(value = "预约进入时间结束")
    @TableField(value = "appointment_in_end_time")
    @Excel(name = "预约进入时间结束", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime appointmentInEndTime;

    /**
     * 是否特殊货物 0-否 1-是
     */
    @ApiModelProperty(value = "是否特殊货物 0-否 1-是")
    @TableField(value = "is_special")
    @Excel(name = "是否特殊货物 0-否 1-是")
    private Integer isSpecial;

    /**
     * 是否同步 1是 0否
     */
    @ApiModelProperty(value = "是否同步 1是 0否")
    @TableField(value = "is_sycn")
    @Excel(name = "是否同步 1是 0否")
    private Integer isSycn;

    /**
     * 车轴数
     */
    @ApiModelProperty(value = "车轴数")
    @Size(max = 255, message = "车轴数长度不能超过255")
    @TableField(value = "axle_count", condition = LIKE)
    @Excel(name = "车轴数")
    private String axleCount;

    /**
     * 数据来源:#{CENTIFICATE:制证;E:E展览;}
     */
    @ApiModelProperty(value = "数据来源:#{CENTIFICATE:制证;E:E展览;}")
    @TableField(value = "data_resource")
    @Excel(name = "数据来源:#{CENTIFICATE:制证;E:E展览;}", replace = {"制证_CENTIFICATE", "E展览_E",  "_null"})
    private CertificateUserDataResourceEnum dataResource;

    /**
     * 展览唯一标识
     */
    @ApiModelProperty(value = "展览唯一标识")
    @Size(max = 255, message = "展览唯一标识长度不能超过255")
    @TableField(value = "e_uuid", condition = LIKE)
    @Excel(name = "展览唯一标识")
    private String eUuid;

    /**
     * 展览数据
     */
    @ApiModelProperty(value = "展览数据")
    @Size(max = 1255, message = "展览数据长度不能超过1255")
    @TableField(value = "e_data_json", condition = LIKE)
    @Excel(name = "展览数据")
    private String eDataJson;

    /**
     * 领取人手机号
     */
    @ApiModelProperty(value = "领取人手机号")
    @Size(max = 255, message = "领取人手机号长度不能超过255")
    @TableField(value = "draw_mobile", condition = LIKE)
    @Excel(name = "领取人手机号")
    private String drawMobile;

    /**
     * 领取人姓名
     */
    @ApiModelProperty(value = "领取人姓名")
    @Size(max = 255, message = "领取人姓名长度不能超过255")
    @TableField(value = "draw_name", condition = LIKE)
    @Excel(name = "领取人姓名")
    private String drawName;

    /**
     * 领取人身份证号
     */
    @ApiModelProperty(value = "领取人身份证号")
    @Size(max = 255, message = "领取人身份证号长度不能超过255")
    @TableField(value = "draw_idcard", condition = LIKE)
    @Excel(name = "领取人身份证号")
    private String drawIdcard;

    /**
     * 领取单号
     */
    @ApiModelProperty(value = "领取单号")
    @Size(max = 255, message = "领取单号长度不能超过255")
    @TableField(value = "draw_number", condition = LIKE)
    @Excel(name = "领取单号")
    private String drawNumber;

    /**
     * 领取方式:#{MAKE:预约领取;SITE:现场领取;}

     */
    @ApiModelProperty(value = "领取方式:#{MAKE:预约领取;SITE:现场领取;}")
    @TableField(value = "draw_type")
    @Excel(name = "领取方式:#{MAKE:预约领取;SITE:现场领取;}", replace = {"预约领取_MAKE", "现场领取_SITE",  "_null"})
    private CertificateUserDrawTypeEnum drawType;

    /**
     * 领取时间

     */
    @ApiModelProperty(value = "领取时间")
    @TableField(value = "draw_time")
    @Excel(name = "领取时间", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime drawTime;

    /**
     * 领取预约时间
     */
    @ApiModelProperty(value = "领取预约时间")
    @TableField(value = "draw_make_time")
    @Excel(name = "领取预约时间", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime drawMakeTime;


    @Builder
    public CertificateUser(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Long certificateId, String principalType, Long exhibitionId, String companyName, Long companyId, 
                    String cardFront, String cardBack, String cardNumber, String fullName, String gender, String cargoMobile, 
                    String contactInformation, Long exhibitorId, String exhibitorName, String booth, String workCertificateImg, String remarks, 
                    String carNumber, String carType, String carSize, String cargoCapacity, String cargoMaterial, String handlingMode, 
                    String transportVariety, String workType, String documentType, String certificateClassify, Integer isPower, String powerClassify, 
                    String spaceCode, String businessLicense, String drivingLicense, String informationStatistics, String report, String specialCertificate, 
                    String specialVehicleCertificate, String yearlyInspection, Integer isDeleted, Long tenantId, Long projectId, Long teamId, 
                    Long subsystemId, Integer isEnabled, CertificateUserFirstAuthStatusEnum firstAuthStatus, String firstAuthText, Long firstAuthId, CertificateUserSecondAuthStatusEnum secondAuthStatus, 
                    String secondAuthText, Long secondAuthId, Integer isCancel, Integer isLoss, Integer isPrintTake, Integer isDraw, 
                    Integer isBlack, CertificateUserResourceTypeEnum resourceType, Integer isMake, Integer isPay, String orderNumber, Long orderId, 
                    LocalDateTime comeInTime, CertificateUserCertificateTypeEnum certificateType, LocalDateTime workEndTime, CertificateUserCertificateStatusEnum certificateStatus, LocalDateTime workStartTime, LocalDateTime appointmentInStartTime, 
                    LocalDateTime appointmentInEndTime, Integer isSpecial, Integer isSycn, String axleCount, CertificateUserDataResourceEnum dataResource, String eUuid, 
                    String eDataJson, String drawMobile, String drawName, String drawIdcard, String drawNumber, CertificateUserDrawTypeEnum drawType, 
                    LocalDateTime drawTime, LocalDateTime drawMakeTime) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.certificateId = certificateId;
        this.principalType = principalType;
        this.exhibitionId = exhibitionId;
        this.companyName = companyName;
        this.companyId = companyId;
        this.cardFront = cardFront;
        this.cardBack = cardBack;
        this.cardNumber = cardNumber;
        this.fullName = fullName;
        this.gender = gender;
        this.cargoMobile = cargoMobile;
        this.contactInformation = contactInformation;
        this.exhibitorId = exhibitorId;
        this.exhibitorName = exhibitorName;
        this.booth = booth;
        this.workCertificateImg = workCertificateImg;
        this.remarks = remarks;
        this.carNumber = carNumber;
        this.carType = carType;
        this.carSize = carSize;
        this.cargoCapacity = cargoCapacity;
        this.cargoMaterial = cargoMaterial;
        this.handlingMode = handlingMode;
        this.transportVariety = transportVariety;
        this.workType = workType;
        this.documentType = documentType;
        this.certificateClassify = certificateClassify;
        this.isPower = isPower;
        this.powerClassify = powerClassify;
        this.spaceCode = spaceCode;
        this.businessLicense = businessLicense;
        this.drivingLicense = drivingLicense;
        this.informationStatistics = informationStatistics;
        this.report = report;
        this.specialCertificate = specialCertificate;
        this.specialVehicleCertificate = specialVehicleCertificate;
        this.yearlyInspection = yearlyInspection;
        this.isDeleted = isDeleted;
        this.tenantId = tenantId;
        this.projectId = projectId;
        this.teamId = teamId;
        this.subsystemId = subsystemId;
        this.isEnabled = isEnabled;
        this.firstAuthStatus = firstAuthStatus;
        this.firstAuthText = firstAuthText;
        this.firstAuthId = firstAuthId;
        this.secondAuthStatus = secondAuthStatus;
        this.secondAuthText = secondAuthText;
        this.secondAuthId = secondAuthId;
        this.isCancel = isCancel;
        this.isLoss = isLoss;
        this.isPrintTake = isPrintTake;
        this.isDraw = isDraw;
        this.isBlack = isBlack;
        this.resourceType = resourceType;
        this.isMake = isMake;
        this.isPay = isPay;
        this.orderNumber = orderNumber;
        this.orderId = orderId;
        this.comeInTime = comeInTime;
        this.certificateType = certificateType;
        this.workEndTime = workEndTime;
        this.certificateStatus = certificateStatus;
        this.workStartTime = workStartTime;
        this.appointmentInStartTime = appointmentInStartTime;
        this.appointmentInEndTime = appointmentInEndTime;
        this.isSpecial = isSpecial;
        this.isSycn = isSycn;
        this.axleCount = axleCount;
        this.dataResource = dataResource;
        this.eUuid = eUuid;
        this.eDataJson = eDataJson;
        this.drawMobile = drawMobile;
        this.drawName = drawName;
        this.drawIdcard = drawIdcard;
        this.drawNumber = drawNumber;
        this.drawType = drawType;
        this.drawTime = drawTime;
        this.drawMakeTime = drawMakeTime;
    }

}
